package com.zbkj.front.service;

import com.zbkj.dal.base.page.CommonPage;
import com.zbkj.dal.pojo.response.OrderFrontDataResponse;
import com.zbkj.dal.pojo.vo.MyRecord;
import com.zbkj.front.model.req.UserScanQrcodeReq;
import com.zbkj.service.model.front.req.spread.FriendOrderReq;
import com.zbkj.service.model.front.req.spread.SpreadFriendReq;
import com.zbkj.service.model.front.req.spread.SpreadOrderReq;
import com.zbkj.service.model.front.vo.spread.*;

import java.util.List;

public interface SpreadService {
    /**
     * 商户推广二维码
     *
     * @param merchantId 商家 ID
     * @return {@link String}
     */
    String merchantSpreadQrcode(Integer merchantId);

    /**
     * 用户推广二维码
     *
     * @return {@link String}
     */
    String userSpreadQrcode();

    /**
     * 用户扫描二维码
     *
     * @param req 需要
     */
    void userScanQrcode(UserScanQrcodeReq req);

    /**
     * 好友列表
     *
     * @param req req
     * @return {@link List}<{@link SpreadFriendVO}>
     */
    List<SpreadFriendVO> friendList(SpreadFriendReq req);

    /**
     * 好友详情
     *
     * @param userId 用户 ID
     * @return {@link FriendItemVO}
     */
    FriendItemVO friendItem(Integer userId);

    /**
     * 用户推广资金
     *
     * @return {@link UserSpreadFundVO}
     */
    UserSpreadFundVO userSpreadFund();

    /**
     * 推广周记录
     *
     * @return {@link SpreadWeekRecordVO}
     */
    SpreadWeekRecordVO spreadWeekRecord();

    /**
     * 推广订单
     *
     * @param req req
     * @return {@link CommonPage}<{@link SpreadOrderVO}>
     */
    CommonPage<SpreadOrderVO> spreadOrder(SpreadOrderReq req);

    /**
     * 好友订单
     *
     * @param req 用户 ID
     * @return {@link CommonPage}<{@link OrderFrontDataResponse}>
     */
    CommonPage<OrderFrontDataResponse> friendOrder(FriendOrderReq req);
}
